package com.itextpdf.local.ess.Signature;

import com.itextpdf.local.ess.PDFLocation.PDELocation;
import com.itextpdf.local.ess.predefine.SealStruct;
import com.itextpdf.text.DocumentException;

import java.io.IOException;
import java.security.GeneralSecurityException;

public interface PDFServerSignInterface {

	/**
	 * 不经过预签章过程，直接对PDF文件签章（适用于可以直接调用到私钥的场景）
	 * @param pdfByte		要签章的PDF文件
	 * @param pdeLocation   印章位置
	 * @param sealStruct	印章数据
	 * @return
	 */
	public byte[] makeSignature(byte[] pdfByte, PDELocation pdeLocation, SealStruct sealStruct) throws Exception;

	/**
	 * 预签章 生成中间文档，hash
	 * @param pdfByte		要签章的PDF文件
	 * @param pdeLocation   印章位置
	 * @param sealStruct	印章数据
	 * @return
	 */
	public PreSignatureBody preMakeSignature(byte[] pdfByte, PDELocation pdeLocation, SealStruct sealStruct) throws IOException, DocumentException, GeneralSecurityException;

	/**
	 *
	 * @param pdfByte 文件
	 * @param sealDto 印章数据
	 * @param preSignatureBody body
	 * @return 签章完成的文件
	 * @throws IOException
	 * @throws DocumentException
	 * @throws GeneralSecurityException
	 */
	public byte[] SignPreSignedPdf(byte[] pdfByte, SealStruct sealDto,PreSignatureBody preSignatureBody) throws IOException, DocumentException, GeneralSecurityException;

}
